草庐IT

Java TLS-PSK 套接字

全部标签

c# - 套接字对象生命周期

我正在使用Socket对象通过tcp向其他程序发送命令。我想知道什么是更好的决定:在每个命令发送/接收session中初始化Socket对象然后关闭它。或者初始化一个全局Socket对象,用它发送所有命令/接收响应并在程序关闭时关闭。所以问题是我应该多久关闭一次“相同”操作的套接字对象? 最佳答案 这取决于您的应用要求。例如假设您正在编写一个smtp客户端,那么服务器将不允许您永远连接,这也是请求/响应类型的协议(protocol)(例如,您发送请求以检查任何邮件并接收它的响应)那么您必须关闭一次套接字您的请求已完成。但是如果你正在

java - 套接字只接受一个客户端

我已经在java中创建了一个接受客户端连接的服务器。但是我只能连接一个客户端classServerextendsThread{privatevoidstartServer(){try{ss=newServerSocket(3000);s=ss.accept();DataReadd1=newDataRead();d1.t.start();}catch(Exceptioner){er.printStackTrace();}}} 最佳答案 你只能接受一个套接字。在您的jButton1ActionPerformed中s=ss.accept(

java - 服务器关闭客户端套接字然后客户端在同一端口上打开新套接字时出现 JVM_Bind 错误

此问题是间歇性的,每30秒运行一次并执行以下网络通信的进程每隔几个小时就会发生一次:远程机器上有一个服务器正在监听客户端连接到这台机器并告诉服务器连接回它服务器关闭套接字并重新连接到客户端当套接字在客户端关闭时,客户端立即开始监听同一端口JVM_Bind错误会在客户端尝试开始监听同一端口时发生,即使它只是在原始套接字关闭后才尝试这样做。在套接字关闭和打开新套接字之间添加100毫秒的轻微延迟可防止JVM_Bind错误。我可以使用什么工具来调试这种情况?连续运行netstat未显示任何干扰端口的情况。尽管在同一端口上启动一个新的套接字监听是一种坏主意,但为什么会间歇性地出现此错误?编辑:一

java - 有没有办法在 Java 中访问 SOL_TCP(又名 IPPROTO_TCP)套接字选项(例如 TCP_KEEPIDLE)?

我希望能够设置TCP套接字KEEPALIVE参数(TCP_KEEPIDLE、TCP_KEEPINTVL和TCP_KEEPCNT),但这些在Socket中似乎不可用。类(class)。基于SocketImpl的文档和SocketOptions类以及关于thispage底部的一些实现细节,我得出的结论是库实现者对setsockopt的“级别”参数进行了硬编码到SOL_SOCKET,这使得无法访问其他级别的选项,例如SOL_TCP/IPPROTO_TCP.我是否缺少另一个处理这些选项的Java类?如果没有,有没有办法获取原始文件描述符编号,以便我可以通过JNI将其传递给一些直接调用setso

sockets - TCP 套接字读取不带帧或大小指示符的可变长度数据

我目前正在编写代码以将数据传输到远程供应商。传输将通过TCP套接字进行。我遇到的问题是数据是可变长度的,并且没有框架或大小标记。发送数据没有问题,但我不确定处理返回数据的最佳方式。数据由不同的“消息”组成,但它们没有固定的大小。每条消息都有一个8或16字节的位图,指示该消息中包含哪些组件。有些组件是固定长度的,有些是可变的。每个可变长度组件都有一个用于整个消息的该部分的大小前缀。当我第一次打开套接字时,我将发送消息,每个消息都应该收到响应。当我开始读取数据时,我应该位于消息的开头。我将需要解释位图以了解包含哪些消息字段。当数据到达时,我将必须验证位图指示的每个字段是否存在且大小正确。一

linux - 如果我在 Linux 上使用原始套接字,内核是否会丢弃带有错误 TCP 校验和的传入数据包?

现在我正在编写一个使用原始TCP套接字的程序。如果有任何带有错误TCP校验和的传入数据包,内核会将它们传递给程序还是丢弃它们?我想知道的原因是弄清楚我是否需​​要手动执行该检查。 最佳答案 由于您自己编写TCP(使用“IP”套接字/层)将必须处理TCP校验和。下面的任何层或任何校验和都将由底层操作系统处理。有了TCP/IP协议(protocol)栈(从下到上的顺序)链接Internet传输申请 关于linux-如果我在Linux上使用原始套接字,内核是否会丢弃带有错误TCP校验和的传入数

javascript - 断开连接后访问套接字对象

下面是一个简单的Node.jstcp服务器。varnet=require('net');varconn=[];varserver=net.createServer(function(client){//'connection'listenervari=conn.push(client)-1;//console.log('[conn',i,']',client.remoteAddress,':',client.remotePort);console.log('[disc]',conn[i].remoteAddress,':',conn[i].remotePort);client.on('

c# - 专用网络上的套接字

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我正在开发一个由两部分组成的产品。其中一部分是运行WindowsEmbeddedStandard的单板计算机上的C#应用程序。另一部分是运行带TCP/IP堆栈的RTOS的嵌入式设备。这两个设备需要通过以太网电缆进行通信。这是点对点的连接。没有任何东西连接到任何外部网络。我是网络编程新手,所以我正在寻找最佳实践。我假设TCP套接字是最直接的方法。我想在编写任何代码和迷路之前我会得到一些建议。可以保证

java - UDP 套接字编程(提取数据,将其存储在字符串中)

我正在学习使用Java进行TCP和UDP套接字编程,我正在为我的网络类(class)阅读的其中一本书有以下行:DatagramPacketreceivedPacket=newDatagramPacket(receiveData,receiveData.length);StringmodifiedSentence=newString(receivedPacket.getData());其中receivedPacked只是一个DatagramPacket类型的对象,而modifiedSentence存储从服务器返回的内容。在这种情况下,ReceivedPacket.getData()在存储

windows - 套接字编程更新 : recv returning -1, 错误 = 10053

我正在Windows7上实现一个围绕套接字recv()调用循环的TCP/IP应用程序。对于少量数据(20MB),recv在两者之间失败。详细信息:我的应用程序需要与运行的HTTP服务器进行通信,两者都在同一台机器上运行,在这种情况下,tcp应用程序正在向HTTP服务器发送大量数据它给出错误=2,recv返回0。错误2表示ENOENT,但它是什么意思?。有谁知道这是什么(关于套接字)以及我如何解决这个问题?msgLen=recv(s,msg,BUFFER_SIZE,0);if(msgLen>0){//doprocessing}else{printf("\nnodatareceived..